﻿using System;
using System.Collections.Generic;
using Shell.Build.Lifetime;

namespace Shell
{
    public interface IShell : IDisposable
    {
        void Register(string name, Type from, Type to, ILifetimePolicy lifetimePolicy);

        void Register(string name, Type from, object instanse, ILifetimePolicy lifetimePolicy);

        object Resolve(string name, Type targetType);

        void Attach(IShellExtension extension);

        void Detach(IShellExtension extension);

        IShell CreateChild();
    }
}
